the amount of recalculation. Each inner sub-expression is
replaced by a function of its maximal free expressions
those expressions. E.g.
f = x . ( y . (+) (sqrt x) y)
((+) (sqrt x)) is a maximal free expression in
( y . (+) (sqrt x) y) so this inner
abstraction is replaced
with
( g . y . g y) ((+) (sqrt x))
evaluating (sqrt x) will also be shared rather than
re-evaluated on each application of f. As Chin notes, the
same benefit could be achieved without introducing the new
outside a loop or procedure.
(1994-12-01)